/**
 * 2019年1月4日上午7:17:58
 * @author 谢进财
 */
package com.baihang.framework.kit.database;

import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.baihang.platform.bean.StartupListenerBean;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * redis帮助类
 *
 */
public class RedisKit {
	private static Logger logger = LoggerFactory.getLogger(RedisKit.class);
	//服务器IP地址
    public static String HOST = "127.0.0.1";
    //端口
    public static int PORT = 6379;
    //密码
    public static String PWD = null; //"123456";
    //连接实例的最大连接数
    private static int MAX_ACTIVE = 1024;
    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例，默认值也是8。
    private static int MAX_IDLE = 200;
    //等待可用连接的最大时间，单位毫秒，默认值为-1，表示永不超时。如果超过等待时间，则直接抛出JedisConnectionException
    private static int MAX_WAIT = 10000;
    //连接超时的时间　　
    private static int TIMEOUT = 10000;
    // 在borrow一个jedis实例时，是否提前进行validate操作；如果为true，则得到的jedis实例均是可用的；
    private static boolean TEST_ON_BORROW = true;

    private static JedisPool jedisPool = null;

    /**
     * 初始化Redis连接池
     */

    static {

        try {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(MAX_ACTIVE);
            config.setMaxIdle(MAX_IDLE);
            config.setMaxWaitMillis(MAX_WAIT);
            config.setTestOnBorrow(TEST_ON_BORROW);
            jedisPool = new JedisPool(config, HOST, PORT, TIMEOUT, PWD);

        } catch (Exception e) {

            e.printStackTrace();
        }

    }

    /**
     * 获取Jedis实例
     */

    public synchronized static Jedis getJedis() {

        try {

            if (jedisPool != null) {
                Jedis resource = jedisPool.getResource();
                return resource;
            } else {
            	logger.info("没连点111");
                return null;
            }

        } catch (Exception e) {
            e.printStackTrace();
            logger.info("redis报错"+e.getMessage());
            return null;
        }

    }

    /***
     * 
     * 释放资源
     */
    
    public static void clearAllResource() {
            if(jedisPool != null) {
                jedisPool.close();//关掉整个池子
            }
        
    }
    public static void clearResource(final Jedis jedis) {
    	if(jedis != null) {
    		jedis.close();//关掉单个
    	}
    	
    }
	public static void main(String[] args) {
		 //连接本地的 Redis 服务
        Jedis jedis = RedisKit.getJedis();//new Jedis("localhost");
        //jedis.sadd("在线", "005","007");
        //jedis.srem("在线", "004");
        //boolean result = jedis.sismember("在线", "009");
        //Set<String> zs =jedis.smembers("在线");
       // jedis.close();
       /* for(String val:zs) {
        	System.err.println(val);
        }*/
        //System.err.println(result);
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());
        //jedis.flushDB();//清空数据库
       /* jedis.sadd("zaixian", "15858830598","13868811112");
        jedis.sadd("renchou", "15858830598","13868811112");
        jedis.sadd("jiage", "15858830598","13868811112");
        jedis.sadd("suoding", "15858830598","13868811112");
        RedisKit.clearAllResource();*/
        jedis.del("user");
	}
	
}
